package com.bnz.advice;

import org.aspectj.lang.ProceedingJoinPoint;

/**
 * 通知
 */
public class MyAdvice {

    //1. 前置通知：是调用方法之前调用
    public void before(){
        System.out.println("前置通知");
    }

    //2. 后置通知：在调用方法之后调用（出现异常不调用）
    public void afterReturning(){
        System.out.println("后置通知，出现异常不调用");
    }

    //3. 环绕通知:在调用方法的前后都会执行
    public Object around(ProceedingJoinPoint pjp) throws Throwable {
        System.out.println("环绕通知---前面代码");
        Object proceed = pjp.proceed();
        System.out.println("环绕通知---后面代码");
        return proceed;
    }

    //4. 异常通知:在方法调用出现异常时执行
    public void afterThrowing(){
        System.out.println("唉呀妈呀，出现异常啦！！！");
    }

    //5. 后置通知：无论是否出现异常都会调用
    public void after(){
        System.out.println("无论是否出现异常，都会调用！【后置通知】");
    }

}
